/**
 * 从包含Markdown代码块的文本中提取、解析JSON，并返回清理后的文本。
 * @param {string} text - 从大模型接收到的原始文本。
 * @returns {{
 *   command: object | null,
 *   cleanText: string,
 *   error: string | null
 * }}
 */
export function parseJsonCommand(text) {
  if (typeof text !== 'string' || !text) {
    return { command: null, cleanText: text || '', error: null };
  }

  const jsonRegex = /```(?:json)?\s*(\{[\s\S]*\})\s*```/;
  const match = text.match(jsonRegex);

  if (match && match[1]) {
    const jsonString = match[1];
    try {
      const commandObject = JSON.parse(jsonString);
      // 成功解析，返回命令和被清理后的文本
      const cleanText = text.replace(jsonRegex, '').trim();
      return { command: commandObject, cleanText, error: null };
    } catch (e) {
      // JSON 格式错误
      return { command: null, cleanText: text, error: '无效的JSON格式。' };
    }
  }

  // 没有找到匹配的JSON块
  return { command: null, cleanText: text, error: null };
}
